<?php

namespace App\Enums;

use App\Traits\EnumTrait;

class AssetJournalTypeEnum
{
    use EnumTrait;

    const ENUM = [
        ['value' => 1, 'text' => 'Credit'],   // 入账 -> Credit
        ['value' => 2, 'text' => 'Debit']     // 出账 -> Debit
    ];

    const CREDIT = ['value' => 1, 'text' => 'Credit'];
    const DEBIT = ['value' => 2, 'text' => 'Debit'];

    /**
     * 获取所有枚举项
     *
     * @return array
     */
    public static function getAll(): array
    {
        return self::ENUM;
    }

    /**
     * 根据值获取对应的枚举项
     *
     * @param int $value 枚举值
     * @return array|null 对应的枚举项或 null
     */
    public static function getEnumByValue(int $value): ?array
    {
        foreach (self::ENUM as $enum) {
            if ($enum['value'] === $value) {
                return $enum;
            }
        }
        return null;
    }

    /**
     * 根据值获取对应的文本
     *
     * @param int $value 枚举值
     * @return string 对应的文本或空字符串
     */
    public static function getTextByValue(int $value): string
    {
        $enum = self::getEnumByValue($value);
        return $enum['text'] ?? '';
    }

    /**
     * 获取枚举项的值
     *
     * @param array $data 枚举项数据
     * @return int 枚举项的值
     */
    public static function getValue(array $data): int
    {
        return $data['value'] ?? 0; // 默认返回 0 如果数据不正确
    }
}
